
╔==============╗
║ Rhino 8 info ║
╚==============╝

For getting the link to work with Rhino 8, use the 'SetDotNetRuntime' command in Rhino and change the Runtime option from 'NetCore' to 'NETFramework', then restart Rhino.

The Grasshopper Component requires at least Rhino 8.5 and needs to be updated to version 1.4 or newer to work 
properly. It will then offer an option to use Rhino 8. Grab it from Tekla Warehouse:

	https://warehouse.tekla.com/#/catalog/details/94b0cde2-3aab-4e50-b983-e6273a44e0b1

╔===================╗
║ Installation info ║
╚===================╝
 	
To install the link, extract the files from the the installation package and run GrasshopperTeklaLink.Setup.exe.
Details and instructions for manual installation are available in the Instructions text file in the same package.



╔=======================================================╗
║ Grasshopper-Tekla Structures Link v1.22 Release Notes ║
╚=======================================================╝


    Create Surface Objects
    ======================
    * New component "Surface" that lets you place surface objects on parts.
        - These objects can be used to e.g. set the concrete cover for rebar sets.
        - The "Smart Associate Surfaces" context meny option means the component ignores the tree input structure
          and tries to match the surfaces to the closest (input) part instead.


    Modify Bolts and Create Bolts improvements
    ==========================================
    * New component "Modify Bolts" that lets you modify an existing bolt group.

    * The create 'Bolt' component accepts a list of Bolt Group Attributes rather than just a single item, meaning
      that you can create more than one group type or use several spacings with a single Bolt component.

    * Added a Stud Length input to the 'Bolt Attributes' component to support the Length attribute of studs.

    * Fix to an occasional exception when inserting the 'Bolt' component.

    * In Tekla, the type of a bolt group can sometimes be converted from e.g. a list to an array depending on the
      distance values used. This can cause issues when updating the bolt group though the link.
        - Now this is more stable.
        - Note: This means that in case a Bolt XY List is deemed convertible to a Bolt Array, it will get a new 
          guid after every modification.
        - The 'Bolt' component output will reflect the true type, in case Tekla has converted a group.


    Split Beams
    ===========

    * New component "Split Beam" that splits a beam into two or more pieces.
        - Updates will cause the beams to re-combine and then split in the new position.
        - Polybeams can't be split since they can't be recombined.


    Get the Phase of any object
    ===========================

    * New Component "Get Phase" that gets the phase of any model object.


    Double-click param inputs to insert default source components
    =============================================================
    
    * You can double-click certain inputs to insert default input components, like "Attributes" or "Position".
        - These inputs will have an "Insert Default Source" option if you right-click them.
        - This works for enumerated inputs as well, which will insert an "Auto Value List" automatically.
        - Some outputs also have an "Insert Default Recipient" option (mostly certain 'Expand' components).

                                                                                                                                                               
    Find components in Grasshopper by selected objects in Tekla
    ===========================================================

    * New command in the Tekla menu in Grasshopper called "Find Tekla Components from Selected Objects".
        - This highlights the Grasshopper components that created the selected Tekla objects.
                              

    Prevent minimizing of Grasshopper while picking in Tekla
    ========================================================
    * New option in the Tekla menu to toggle minimizing of Rhino and Grasshopper while picking objects in Tekla.
        - Per default minimizing is now off.
        - The windows are restored to the proper location even if they were attached to the edges of the screen.


    Place items by a plane
    ======================

    * The 'Create Item' components have an updated input called 'Location' that now accepts a Plane as input, as 
      an alternative to just a Point or a Line.
        - This means that if you're inserting items by providing shape profiles at the 'Profile' input (e.g. from 
          the 'Create Shape' component), the item shape geometry will get inserted and oriented according to any 
          planes that are provided in the 'Location' input.
        - If you're not providing a shape profile name but instead item geometry directly to the 'Geometry' input,
          the item insertion points will be along the X-axis of any planes that are provided in the 'Location' 
          input. The item geometry will be created at the same location that the geometry has in Rhino, as before.

    * The 'Create Shape' component has an updated input called 'Location' that now accepts a Plane as input, as an 
      alternative for a Point or a Line.
        - The shape geometry will be oriented according to any provided plane. The default is the global XY-plane.


    Better support for the Grasshopper Component (requires version 2.1)
    ===================================================================
    * If a Grasshopper Component in Tekla has subcomponents, and subcomponents get manual changes to attributes
      that arent controlled by the parent component, the changes are preserved when the parent component gets
      modified.

    * Auto value lists connected to Selection Filter inputs can be updated from the Grasshopper Component.


    Other fixes
    ===========

    * Fix to an issue with the enhanced 'Object Pipeline' component that could make the component fail the first
      time the definition was opened or when the definition was run through the GH component in Tekla.

    * Fix to an issue with cut planes not being properly regenerated when re-opening a definition.

    * Curved and Circular rebar groups can be modified with the 'Modify Rebar Group' component.

    * The 'Point Display' component outputs a tree if the input is a tree.

    * The 'Deconstruct Assembly' component is significantly faster.

    * Attributes and UDAs in outputs are sorted alphanumerically rather than lexiographically
        - This means that "attribute_2" is listed before "attribute_10".

    * Clearer error message when there are DLL conflicts on startup.

    * Grasshopper UI performance improvements when there are a lot of Tekla objects in the parameters.



╔=======================================================╗
║ Grasshopper-Tekla Structures Link v1.21 Release Notes ║
╚=======================================================╝

NOTE: This update requires Rhino version 7.9 or newer. This means Rhino 6 is not supported any more.

There's a new "Give Feedback" component that will open a web form where you can submit feedback about the link.


    Bolts
    =====

    * New component "Create Bolt" that inserts a bolt group to the Tekla Structures model.

    * New component "Bolt Attributes" to set common bolt attributes.

    * New component "Bolt Group Attributes" to set bolt group attributes.

    * New component "Bolt Hole Attributes" to set bolt hole attributes.
        - NOTE: Some features of special holes require Tekla Structures 2023 or newer.

    * New component "Bolt Position" to set the position of the bolts.
        - The 'Calculate Rotation' component can be used to calculate the desired rotation.


    Base Points
    ===========

    * New component "Create Base Point" to define a new base point and add it to the list in Tekla Structures.
        - To set the new base point as the current base point, use the 'Set Base Point' component.

    * New component "Set Base Point" to set the current base point of the Tekla model. New geometry will be
      created according to this base point.
        - You can optionally use the 'Auto Value List' component or the output of the 'Create Base Point'
          component to provide the base point name.


    Selection Filters on the fly (for e.g. the Tekla Object Pipeline component)
    ===========================================================================

    Filters can be created from expressions, or from text in the format used in SObjGrp files.

    The expression syntax can be e.g.
        (Part.Name == BEAM1 || Part.Name == COLUMN*)
    which gets all parts whose name is BEAM1 or whose name starts with COLUMN.

    This text can be plugged directly into the 'Tekla Object Pipeline' component.

    For more syntax, use the 'Get Filter Expression' component to examine existing filters.

    NOTE: User-defined attributes can't be used in expressions to create filters. There are some other properties 
          that might result in errors as well due to API limitations especially in older Tekla versions, e.g.
          pour-related properties.

    * New component "Create Filter" to create a new selection filter in Tekla Structures.
        - The input can be an expression, text from an SObjGrp file or the name of an existing filter to copy.
        - The output can be used for the 'Tekla Object Pipeline' component.
        - The filter will be available in Tekla Structures even after you close the Grasshopper definition.

    * New component "Get Filter Expression"
        - Gets the filter expression and SObjGrp text from an existing filter.

    * The 'Tekla Object Pipeline' component can accept a filter expression instead of a filter name.
        - The Filter input can be an expression, text from an SObjGrp file or the name of an existing filter.


    New part editing possibilies
    ============================

    * New component "Chamfer Edge" that creates an edge chamfer.

    * 'Part Cut' and 'Plane Cut' components can cut Rebar Sets and Surface objects.

    * Selecting a boolean component will select the boolean object in the Tekla model, and not the part.


    Improved Assembly handling
    ==========================

    * "Assembly" and "Cast Unit" components have a new right-click option that lets you select if parts are added
      as sub-assemblies. Per default the Assembly component uses sub-assemblies, and the cast unit does not.

    * New component "Add to Assembly" that lets you add an assembly, a part or other assemblable object to an
      existing assembly.

    * Assembly and Cast Unit components are more stable and don't get new numbers every time they're updated, just
      when needed (e.g. when the main part is changed).


    Improved Component/plugin handling
    ==================================

    * The class of all connections and details can be set with the backing attribute "group_no" followed by a
      number.
        - Previously this didn't work for plugin-type components.
        - This attribute is also returned by the "Deconstruct Component" component.

    * Tekla plugin or component text attributes that are longer than 79 tokens can be retrieved with the 'Get All
      UDAs' and 'Deconstruct Component' components.


    Other improvements
    ==================

    * Support for custom units in Rhino.
        - Distance inputs are automatically converted according to the meters per unit value.
        - This makes it possible to set up e.g. the US Survey Feet conversion value in Rhino and use it in Tekla.
        - US Survey Feet, if used in the Tekla model, also work with the GH Component in Tekla (version 1.6.4+).

    * It's now possible to provide multiple spacing values in a list for the 'Guideline Attributes' component.

    * The 'Beam Rotation' component is renamed 'Calculate Rotation' and can be used to calcualte rotation values
      for Bolt Groups, in addition to Beam type objects.

    * The 'Align With Z' input for the 'Get Coordinate System' component has an effect on Items as well.



╔=======================================================╗
║ Grasshopper-Tekla Structures Link v1.20 Release Notes ║
╚=======================================================╝


    New components for modifying bent and lofted plates or slabs
    ============================================================

    * New component "Modify Bent Plate" that can modify an existing bent plate in Tekla Structures.

    * New component "Modify Lofted Plate" that can modify an existing lofted plate or slab in Tekla Structures.


    Enhanced 'Object Pipeline' component
    ====================================

    * New input "Box" that can be used to provide a search box from where to retrieve objects.
        - Note that some objects that are just close to the box without colliding may be included in the results.

    * New input "Run" that can be toggled to collect objects.
        - Default is true, which means that objects are collected whenever any of the inputs are updated.
        - If set to false, previously collected objects will still be available in the output.

    * If any input is null or invalid, no objects are returned. If the inputs are empty, all objects are returned.


    New output "Part" for boolean components
    ========================================

    * Boolean components (Fitting, Plane Cut, Part Cut and Attach to Part) have a new output "Part" that will 
      contain the original part after the modification has been applied.
        - This makes it easier to chain components and make sure that they run in the desired order.
        - Selecting the components will select the part and not the boolean object.
        - The 'Part Cut' component can accept a boolean part (cut) as the cutting part.


    New options for welds and rebar sets
    ====================================

    * The 'Weld Attributes' component has a new input "Additional Size"

    * The 'Surface Attributes' component's input "Reversed" is renamed "Flip Bar Side" and now applies to both Leg
      Faces and Leg Surfaces.


    'Assembly' and 'Cast Unit' component fixes
    ==========================================

    * Less unwarranted warnings about steel and concrete parts on the same assembly level.

    * Assemblies created by the Grasshopper Component in Tekla will keep their GUIDs between modifications.


    Tekla components in clusters solve syncronously
    ===============================================

    * Tekla components in clusters are now always solved syncronously.
        - Since 1.17, any Tekla component can be put inside a cluster. However, when multiple components in a
          cluster depend on each other it could cause excessive or infinite update loops and out of date data.
          This update prevents that.


    New behaviors & other fixes
    ===========================

    * If connecting a Tekla Model Object to a standard 'Guid' param, the object GUID is returned.

    * The 'Chamfer Corner' component works on Bent Plates, in case they have corners that can be chamfered.

    * The 'Chamfer Corner' component preserves object UDAs even if triggered through the Grasshopper Component.

    * The 'Display Length' component displays the length in fractions if ft-in are used as units in Tekla.

    * For any input param with named values, clicking the selected value in the popup menu will clear the value.

    * There's a warning in case you connect both the 'Geometry' and the 'Profile' input of an 'Item' component.

    * New Grasshopper status bar messages when referencing objects from Tekla.

    * Inserting multiple Tekla components simultaneously from multiple 'Component' components is more stable.
        - Previously the components sometimes needed a re-solve for all attributes to be set properly.

    * 'Auto Value List' - fix for a 1.19 bug that caused the component to stop working with some inputs.



╔=======================================================╗
║ Grasshopper-Tekla Structures Link v1.19 Release Notes ║
╚=======================================================╝


    The Loader can load the drawing link and other Grasshopper-Tekla plugins 
    ------------------------------------------------------------------------
    * If the Grasshopper Tekla Drawing Link ".gha" extension is changed to ".dll", it'll get loaded with the Tekla
      references resolved according to the model link, avoiding many reference conflicts. Newer versions of the 
      drawing link migh already have the extension ".dll".
        - You can have multiple drawing link dll:s in the loader folder, and the loader will use the one that 
            matches the model link.

    * The GrasshopperTeklaLink.Loader.gha will try to load any dll:s whose name starts with "GrasshopperTekla" as
      a Grasshopper plugin. So other Grasshopper-Tekla plugins can be renamed in a similar fashion and get picked
      up by the loader.

    * Dll:s will get unblocked automatically.

    * If only a single Tekla Structures version is running, the loader won't ask what link version to use.

    * Info is better conveyed in tooltips in case of conflicting Tekla references.
        - Conflicts can still happen e.g in case some other .gha that references Tekla has been loaded by 
            Grasshopper before the loader.


    Rebar Sets: More guidelines and new options in Tekla 2025
    ---------------------------------------------------------

    * Rebar sets created from leg faces (closed curves at the 'Surface' input) can have an unlimited number of
      guidelines.
        - Sets created from surfaces (single-face breps at the 'Surface' input still have a limit of 2 guidelines.

    * New input "Close Shape" for the 'Rebar Set' component.
        - This sets whether disconnected bar legs should be connected where possible to form a closed shape.

    * New inputs "Chamfer", "Inherit Offsets" and "Inherit Spacings" for the 'Guideline Attributes' component.
        - These set the corresponding properties for the guidelines.
        - 'Inherit Spacings' has an effect in older Tekla versions as well.


    Tekla Plugins: Easier to give the required input
    ------------------------------------------------

    * The 'Component' component can use single objects as lists if it's needed for the plugin to insert correctly.
        - The component automatically convert single objects to lists and retries if insertion initially fails.
        - This means the Duplicate Objects workaround for single objects as list inputs isn't needed any more.

    * The 'Plugin Input' component has a new button "Setup inputs".
        - This will read input types from any manually inserted plugin instance in Tekla and add 'Plugin Input'
            input params accordingly.
        - The 'Plugin Input' component still works fine when used the old way by manually adding/removing inputs.

    * The 'Plugin Input' inputs can be renamed to contain certain keywords to improve performance. These are:
	- "Point(s)": Tekla control lines and polylines (e.g. from the Tekla line param) can then be connected
             straight to these inputs (i.e. they don't need to be converted to Rhino lines as before).
	- "Polygon": As above, and additionally the input type will always be a polygon even if just one or two
             points are provided.
	- "N Objects": The input will always be a list even if it just consists of 1 single object, removing the
            need to duplicate the object. This also avoids the small performance penalty that comes if the 
           'Component' component attempts to insert the plugin twice (as descibed above).
        These names are automatically used if the "Setup Input" command is used.

    * To select between presets for a Tekla plugin, the 'Auto Value List' component can be connected to the 
      'Attribute File' input of the 'Component' component.


    Any currently selected objects in Tekla can be referenced directly into Grasshopper
    -----------------------------------------------------------------------------------

    * When referencing objects with 'Model Object' or other Tekla params, the params will first try to read in 
      currently selected Tekla objects from the model.
        - In case nothing valid is selected in the model, the user is asked to select objects as before.
    	- This is more aligned with how object referecing works from Rhino.
        - This also allows you to use area selection to select e.g. Bolts and Reference Objects in Tekla, which 
          doesn't work properly if the selection is triggered through Grasshopper/the API.

    * After picking in Tekla, the GH window is restored in front of other windows in Windows 11.


    Improved profile handling
    -------------------------
    * New component "Multi-Section Profile" that creates a fixed profile with multiple cross sections from curves
      and adds it to the Tekla Profile catalog.

    * Fixes to the 'Profile Contour' component
        - A new right-click option that toggles High Accuracy mode when extracting the contour (Tekla 2022+).
        - Sketched profiles are correctly positioned (this means sketched profiles are again slow to extract).
        - Contours positioned upside-down in the XY plane are handeled correctly.


    Support for Part Corner Chamfers
    --------------------------------

    * New Component "Chamfer Corner" that can modify the corner chamfers of a plate, slab or polybeam.
        - Any existing chamfers will be removed.

    * New component "Chamfer" that creates chamfer attributes to be used with the 'Chamfer Corner' component.


    'Expand Object' component: Easier to use output geometry
    --------------------------------------------------------

    * Tekla contours, curves and planes returned by the 'Expand Object' component can be used directly as Rhino/GH
      curves and planes.

    * Contour points returned by the 'Expand Object' component are not converted to Tekla control points.
        - This means that their chamfer properties can be extracted using an additional 'Expand Object' component.

    * When the input object changes, if the type of an output changes but not its name it doesn't cause an error.


    A more versatile 'Get Property' component
    -----------------------------------------

    * The 'Get Property' component has a new input "Property Type" to select between report property and UDA.
        - The default is "auto". This is fine in most cases, and means that you don't need to know the type of the
            property.
	- If you're reading a UDA, you can set the type to UDA to make the component solve faster.
        - If a UDA has the same name as a report property the type should be set to get the right property.
        - With this change the Get Property component can always be used instead of the 'Get UDA Value' component.

    * If retrieving an enumerated UDA (these are presentted as dropdown lists in the Tekla UI), using the "auto"
      setting for the 'Property Type' and 'Value Type' now returns the UDA value as text.
	 - Previously the value was returned as a number. Now the number can be obtained by setting the value type
             to "int" if needed.


    Other fixes
    -----------

    * The 'Get Father' component outputs null instead of "No Value" when there's no father.

    * The values in the 'Type' input of the 'Object Pipeline' component are in alphabetical order.

    * When connected for the first time, the 'Auto Value List' defaults to any persistent value in the recipient.

    * Fix to a bug where plates and slabs were auto-oriented when inserted even if 'Orient' was set to false.



╔=======================================================╗
║ Grasshopper-Tekla Structures Link v1.18 Release Notes ║
╚=======================================================╝


    Support for Welds
    =================

    Welds and polygon welds can now be inserted and controlled through Grasshopper.

    * New component "Weld" that creates a weld or polygon weld in Tekla Structures.

    * New component "Weld Common Attributes" to set the common attributes of a weld.

    * New component "Weld Attributes" to set the weld attributes.

    * New component "Tail Attributes" to set the Tail Information of a weld.


    Smoother installation & Support for multiple link versions
    ==========================================================

    * Installation doesn't require admin rights, like it previously did for e.g. Tekla 2024.
        - Run GrasshopperTeklaLink.Setup.Exe from the downloaded and extracted installation zip file.
        - The installer places these two files into the Grasshopper Libraries folder:
              GrasshopperTeklaLink.[TeklaVersion].dll
              GrasshopperTeklaLink.Loader.gha
            You can move them to the Libraries folder manually as well (or to any other location that Grasshopper
            loads plugins from), just remember to unblock both if needed.
        - This removes the need to put anything into the Tekla bin folder.
    
    * It's possible to have multiple link versions installed at the same time.
        - Just run the link setup for another Tekla version.
        - Alternatively place another GrasshopperTeklaLink.[TeklaVersion].dll in the Libraries folder manually
            (or to wherever the Loader.gha is located).
        - If needed, Grasshopper will show a version list and ask you which version to use each time it launches.


    More control over part Position
    ===============================

    * The 'Position' component has new inputs for setting the position enums like Left, Top, Front etc.
        - If connected, these inputs will override the buttons on the component.

    * The 'Expand Position' component returns named integers for the enum outputs.
        - So the outputs will display as text but can be used as numbers.


    More control when working with Shapes
    =====================================

    * The 'Create Shape' component has a new right-click option "Keep all inserted shapes" that means that when a
      new shape input name is provided, the shape with the old name will remain in the Shape Catalog rather than
      being deleted/updated.

    * The 'Item' creation components have a new right-click option "Bake to Tekla and keep shape name", which 
      similarly to the "Bake to Tekla" command will create independent copies of the items that were generated, 
      but won't create a copy of the shape they use.
        - This means that the shape names of the baked objects remain unchanged, and whenever the shape with that 
            name is updated by e.g. the 'Create Shape' component the baked objects will use the updated shape.
        - NOTE: This is only available if the shape is provided through the 'Profile' input, and not for the shape 
            name that is automatically generated when there's only geometry input.


    Other improvements
    =====================================

    * The 'Profile Contour' component preformance is greatly improved.
        - Previously it could stall Tekla and Grasshopper when used for more than a handful of contours.

    * The Tekla Point, Line, Polyline and Face params don't create duplicated objects in Tekla when connected from
      Rhino params/components.

    * The 'Bounding Box' component has a new right-click option "Union Box" to create single box from all the 
      objects in each input list/branch.

    * The 'Fitting' component has new inputs for setting the size of the fitting plane. The sizes can be domains.



╔=======================================================╗
║ Grasshopper-Tekla Structures Link v1.17 Release Notes ║
╚=======================================================╝


    Support for Rebar Sets
    ======================
    Rebar set components require Tekla Structures 2022 SP 12 or newer.


    Create a rebar set
    ------------------
    * New component "Rebar Set" that inserts a rebar set.


    Add rebar set modifiers
    -----------------------
    * "End Detail" that creates hooks and cranks for rebar sets.
        - Connect either Hook or Cranking Attributes to the component to select the type of end detail.

    * "Splitter" that creates rebar set splices.
        - Connect either Lapping or Cranking Attributes to the component to select the type of splitter.

    * "Property Modifier" that creates rebar set modifiers.


    Set all the rebar set attributes
    --------------------------------

    * "Surface Attributes" to set the attributes of the leg faces or leg surfaces of a rebar set.

    * "Guideline Attributes" to set the attributes of a rebar set guideline.

    * "End Detail Attributes" to set attributes for a rebar set End Detail.

    * "Splitter Attributes" to set attributes for a rebar set Splitter

    * "Modifier Attributes" to set attributes for a rebar set Property Modifier.

    * "Cranking Attributes" to set attributes for a crank for either a rebar set Splitter or End Detail.

    * "Lapping Attributes" to set lapping attributes for a rebar set Splitter.

    * The 'Hook' and 'Hooks' components (newly inserted) have an input for Rotation that applies to Rebar sets.


    Other new components
    ====================

    * New component "Attach to Part" that attaches a part to another part.
        NOTE: The original guid of the attached part will be lost.

    * New component "Grid Plane" that creates a grid on a plane or along a line.
        - The resulting grid can be used to create a view in Tekla Structures.
        NOTE: Updated 2024-11-01 to allow Heigth and Length inputs to be in Rhino units rather than always mm.


    Support for Tekla components in clusters
    ========================================

    * Any Tekla components, including object creating ones, can be put inside clusters.
        - When you cluster an object creating component, it will continue to modify the same Tekla objects that it
          originally created.
        - Subsequent copies of the cluster will generate new objects, as expected.

        NOTE: If you explode a cluster, you will get duplicated objects, since Grasshopper gives new GUIDs to the
              extracted components.

        NOTE: If you have a pre-clustered version of the component saved in another definition, that component
              will create new objects next time it's solved. If you then go on and make a copy of the cluster with 
              the clustered component, it will hi-jack these new objects as it believes it's just been clustered.

        NOTE: Putting Tekla components in clusters means that the mapping files for the clustered components will
              use 23 more chars than previously. Paths in the Windows API (and Tekla) can be max 260 chars.


    Various enhancements
    ====================

    * 'Modify' components accept boolean parts as input and will modify the underlying object (beam, slab, ...). 

    * 'Convert to Mesh' and 'Brep' are able to turn boolean cut objects into solids, if they are input directly.
        - Boolean cut objects that are part of an input assembly or component are are not turned into solids.

    * Bolts can be converted to accurate breps or meshes by using the HIGH_ACCURACY setting for the 'Convert to
      Mesh' or 'Brep' components.

    * New input "Plane" for the 'Grid' component, to be able to rotate or orient a Grid.

    * When arcs or circles are converted to polylines for rebar shapes, the tolerance setting is respected.

    * Display components have a Redraw command in the context menu.
        - Previously redraw was triggered only by double-clicking the icon/text.

    * The 'Create Tekla Profile' component appends the iteration number to the profile name if the name has been
      automatically generated.

    * Fix to bug that made switching between spiral and normal rebar groups failing.



╔=======================================================╗
║ Grasshopper-Tekla Structures Link v1.16 Release Notes ║
╚=======================================================╝


    New components
    --------------

    * New component "Bounding Box" that returns the bounding box of a Tekla object.
        - If the Plane input is left empty, the object's coordinate system will be used.

    * New component "Get Object by GUID" that can be used to reference Tekla objects based on their GUIDS.

    * New component "Set Phase" that can set the phase of any Model Object
        - Missing phases will get created. Existing phases will be updated with new names, if provided.

    * New component "Phase Catalog" that can be used to select from available phases.
        - The output is the phase number.

    * New component "Color Display" that can be used to add a temporary color to model objects.
        - Colors can be cleared by updating or redrawing the Tekla view.

    * New component "Mesh Display" that draws a temporary mesh (mesh, surface, brep) in the Tekla view.
        - These can be cleared by updating or redrawing the Tekla view, or by deleting the component.


    Controlling the up-direction of details and connections
    -------------------------------------------------------

    * New input 'Up direction' for the 'Component' component, which appears when inserting a detail or connection.
        - Can be used instead of the 'zsuunta', 'zang1' and 'zang2' attributes that also control the up-direction.

    * Using the 'Set Component Attributes' component doesn't reset the up-direction of the modified component.


    Imporved Grasshopper Component support
    --------------------------------------

    * Previously the 'Face' param didn't contain the father of the face when used through the Grasshopper
      component, this has been fixed.
        - Requires Grasshopper Component version 1.4.

    * The "Create Profile" component can be used from the Grasshopper component in Tekla.
        - Now works without using macros internally, which also gives it a significant speed boost.


    Various enhancements
    --------------------

    * Tekla points returned by the 'Expand Object' component can be used directly as Rhino/GH points.
      - Other geometries like polygons can be expanded further with 'Expand Object' to get the points.

    * The 'Auto Value List' component gets populated with "True" and "False" when connected to boolean inputs.

    * The 'Get Children' component returns the single rebars from a rebar set.

    * The 'Deconstruct Item' component doesn't have a Mesh output any more.
      - This makes the component more performant.
      - To get the solid geometry, use the 'Convert to Mesh' or 'Convert to Brep' components instead.
      - Applies to newly inserted components.

    * Tekla components like the Wall Layout Opening will automatically update the components they are applied to.


    Fixes
    --------------------

    * Less risk of duplicated objects when using model sharing.
        - When doing a model sharing read-in (or on model reopening), Tekla objects will be re-linked to the model 
          based on their guids. This should overcome some issues when objects in memory are becoming invalid 
          during the read in causing Grasshopper to lose track of them.

    * Fix to issue where the 'Property Catalog' component sometimes wouldn't list any properties.

    * Changing the filter in the 'Tekla Object Pipeline' component, or clearing a 'Model Object' param, will clear
      all the cached model objects.
        - This means the model object properties will be updated to the latest state if they are referenced again.



╔=======================================================╗
║ Grasshopper-Tekla Structures Link v1.15 Release Notes ║
╚=======================================================╝


    New components
    --------------

    * New component "Property catalog" that can be used to search for available report properties and UDAs.
	- Shows properties similar to what's shown in Tekla Organizer > Settings.
        - The output can be connected to the "Get Property" component.
        - The "Get Property" component can be used to get UDAs as well.

    * New component "Get Father" that can be used to get the father object of any model object that has a father.
	- For bolts, welds and connections the father is the main part.
        - If the input is the "Face" param, it will return the model object that the face was picked from.

    * New param "Face" that can be used to reference in a face from the Tekla model.
        - The face will be shown as a closed polyline.
        - This param can be used with the Grasshopper Component v 1.3 in Tekla, where it will trigger a "Pick
          Face" prompt.
	- The object that the face was picked from can be obtained with the "Get Father" component.
        - The returned polyline can have at most 99 points - if the face has more points, these won't be returned
          (API limitation).


    New components for temporary graphics
    -------------------------------------
    Temporary graphics can be cleared by updating or redrawing the Tekla view.

    * New component "Measure Distance" that draws a distance in the model.

    * New component "Text Display" that draws a text in the model.

    * New component "Polyline Display" that draws a polyline in the model.


    Control over curve-to-polyline conversions
    ------------------------------------------

    * New right-click option "Tolerance" that can be set to change the tolerance that is used for converting
      smooth curves to polylines when Tekla inserts e.g. beams or plates.
        - If the shape can't be converted wihthin the tolerance without using more control points than "Max
          control points" allows, a higher tolerance will be applied. 
	- Note that setting a tighter tolerance might result in a slower conversion and more control points.

    * If the right-click option "Max control points" is set to the default value, polylines with more vertices
      than this value - but less than the maximum number that Tekla allows - will automatically get all their
      vertices converted to control points without dropping any.


    Better extractions from the Tekla model
    ---------------------------------------

    * Speed improvement for components that return and handle objects from the model.
        - This includes 'Object Pipeline', 'Get Children', 'Deconstruct Component' and 'Deconstruct Assembly'.
        - Also applies when there are new objects for the 'Model Object' param and other floating params, as
          well as for object creating components.

    * Fix to a bug that caused errors in meshes created from Tekla surface objects.

    * The 'Get Coordinate System' component can be used to obtain the coordinate system of Tekla Point, Line,
      Polyline and Face params.


    Setting phase for objects
    -------------------------

    * When setting the phase for any object, if the phase doesn't exist in the model, it will be created.

    * When setting the phase for a Tekla component/connection, any child objects (including sub-components and
      their children) will get the same phase as well.

    * The phase of already inserted components in Tekla can now be changed with the "Set Attributes" component.
        - Use an attribute named "Phase" (case insensitive) followed by any value that can be converted to an int.

    * The phase for new components and assemblies can be set as previously, with some updates:
        - Use an attribute named "Phase" (case insensitive) followed by any value that can be converted to an int,
          and feed this attribute into the attributes input of the Component component or the UDA input of the
          Assembly component.


    Mapping fixes
    -------------

    * The 'Rebar Group' and 'Modify Rebar Group' components had some mapping issues when creating different types
      of groups from the same component (normal, curved, circular). Now attributes are applied in the right order
      and output groups have the correct tree structure.

    * 'Construct Plate' component outputs the correct data structure even when the input is points.
        - Null inputs can still change the output structure, and empty branches are removed from the output.



╔=======================================================╗
║ Grasshopper-Tekla Structures Link v1.14 Release Notes ║
╚=======================================================╝

    Note: This update requires Rhino 6 SR8 or newer.
    Also note that 'Convert to Brep/Mesh' produce geometries that might differ from previous, more on this below.

    ---

    Additional components for modifying existing Tekla objects
    ----------------------------------------------------------
    Note: The Grasshopper components don't have a 'memory', which means that any modifications are permanent and
          can only be undone in Tekla Structures itself

    * New component "Modify Single Bar" to modify single bars.

    * New component "Modify Rebar group" to modify rebar groups.

    * New component "Modify Item" to modify items.

    * The 'Set UDAs' component will automatically erase any existing UDAs with the same name but different type.
        - Previously, in order to change the type of an existing UDA, you needed to first reset it to the default
          value.


    Extract better data from the Tekla Model
    ----------------------------------------

    * New component "Get CoordSys" to get the coordinate system of a Tekla object as a Grasshopper plane.
        - Assemblies will return the coordinate system of the main part.
        - The coordinates are returned both relative to the global and the local system (i.e. current work plane).

    * Performance improvement for the 'Convert to Brep' and 'Convert to Mesh' components.
        - The components handle holes better and have improved overall stability.
	- For somewhat complex geometries, meshes can be 2x quicker and breps 10x quicker.
        - Note: This update means that breps and meshes extracted from Tekla can get a different number of
          (internal) faces compared to earlier. Faces are also returned in a different order, which means that any
          definition that relies on index numbers to look up faces, edges or vertices will likely need to find new
          indexes to use.

    * The 'Deconstruct Component' component doesn't return attributes whose name start with 'xs_command_' or
      'xs_nobjects_' any more.
        - These attributes are generated by Tekla Structures and might cause errors if they are set by the user.
        - The 'Get All UDA:s' component will still return these if they are needed.


    Create more accurate profiles
    -----------------------------

    * The 'Create Profile' component can use up to 999 points in the profile contour.
        - Right-click the component icon/text to view the digit scroller for changing this value.
	- Double-click the scroller to set the value using numbers.
        - More points means more accurate roundings, but might hurt performance a bit when using the profile.


    Progress indicator when creating and updating objects
    -----------------------------------------------------

    * Object components show the progress while objects are being generated or modified in Tekla.
        - The Grasshopper status bar also shows a counter.


    New commands in UI to zoom to and delete objects
    ------------------------------------------------

    * Object components and params have a new right-click command "Zoom to Tekla objects".

    * Params have a new right-click command "Delete objects in Tekla" (similar to the one for Object components).



╔=======================================================╗
║ Grasshopper-Tekla Structures Link v1.13 Release Notes ║
╚=======================================================╝


    New components to modify existing Tekla objects
    -----------------------------------------------
    Note: Be careful when using these components, as the Grasshopper components don't have any 'memory', which
    means that any modifications are permanent and can only be undone in Tekla Structures itself!

    * New component "Modify Beam" to modify existing beam type objects (beams, columns, panels, pad footings) in
      the Tekla model.

    * New component "Modify Plate" to modify existing contour plates or slabs in the Tekla model.

    * The 'Set [Component] Attributes' component can set attributes from saved presets.


    Possibility to get child objects
    --------------------------------
   
    * New component "Get Children" to get the child objects associated with any model object.
        - E.g. bolts, welds, rebars, details, cut planes

    * The 'Deconstruct Assembly' component's 'All Objects' output now includes boolean parts.


    Bug fixes
    ---------

    * Multiple "Component" components running in parallell don't risk inserting Tekla components in the wrong
      locations any more.

    * The 'Convert to Mesh' component works more reliably for some meshes.

    * The 'Deconstruct Beam' component produces valid 'Deforming' output for polybeams.

    * Fix to a bug in the 'Deconstruct Object' component which caused the component to get stuck in a loop for
      some object types.



╔=======================================================╗
║ Grasshopper-Tekla Structures Link v1.12 Release Notes ║
╚=======================================================╝

    Version 1.12.1 fixes the 'Object Pipeline' component added in 1.12 so that it doesn't cause an error to pop up
    every time Grasshopper is launched without Tekla running.

    ---

    New components for getting objects from the Tekla model
    -------------------------------------------------------

    * New component "Object Pipeline" that can reference objects from the Tekla model based on their type and/or a
      selection filter.

    * New component "Auto Value List" that can be connected to any input with named values (i.e. inputs that you
      can right-click to get a list of values to pick from).
        - Once connected, the component will show a dropdown with all the available attributes.
        - Can be used on e.g. the 'Filter' and 'Type' inputs of the 'Object Pipeline' component.


    Better handling of shapes and breps
    -----------------------------------

    * The 'Convert To Brep' component tolerances are further refined to get more accurate breps.
        - Now a tolerance of 0.1 mm is used internally.
        - This also fixes some issues that were introduced in version 1.11.

    * If the 'Create Shape' component is being used in a definition that is being triggered by the "Grasshopper
      Component" Tekla plugin, and the Name input is empty, the component will generate a unique shape name for
      each placed plugin instance.
        - Previously the same (random) name would be generated by the component within each plugin instance,
          meaning that newly inserted plugin instances would overwrite shapes inserted by other plugin instances.

    * When baking an item to Tekla that uses an existing shape from the Shape Catalog as input (rather than a brep
      from Grasshopper), a copy of the shape will be generated and used for the baked item.
        - This copying includes shapes that are being created by the 'Create Shape' component.


    Tekla component insertion improvements
    --------------------------------------

    * The 'Component' component accepts a list of several component names in its 'Name' input.
        - The names will be used sequentially to insert different components, similar to the 'Attributes' input.
        - The names need to refer to the same component type (e.g. CUSTOM_PART), otherwise a warning is raised.

    * The 'Component Catalog' component is refreshed when another Tekla model is opened, since different models
      might contain different items in the catalog.

    * The 'Component Catalog' library picking option (i.e. picking a component using the dialog that shows icons
      for the Tekla components) now returns the right component name.
        - This was broken in Tekla Structures 2021 and 2022.


    Automatic calculation of outputs of the 'Deconstruct' components
    ----------------------------------------------------------------

    * The outputs of the 'Deconstruct' components are calculated immediately when they are connected to something.
        - Rather than the user needing to re-trigger the component as previously.



╔=======================================================╗
║ Grasshopper-Tekla Structures Link v1.11 Release Notes ║
╚=======================================================╝


    "Convert to Brep" and "Convert to Mesh" component improvements
    --------------------------------------------------------------

    * New input option for the solid creation type, e.g. NORMAL or RAW (i.e. no cuts or fittings).

    * The "Convert To Brep" component has increased tolerance when converting objects with flat cuts.

    * The "Convert To Brep" component doesn't crash any more when the definition is triggered through
      Rhino.Inside (i.e. is used with the Grasshopper Component in Tekla).


    "Component" component improvements
    ----------------------------------

    * A Tekla component inserted using the "Component" component will be updated to the new type whenever the
      "Name" input is changed.
        - The component is deleted and re-inserted in Tekla, so it will get a new GUID.
        - Changing the secondary parts of a connection now also re-inserts the connection as expected

    * The Component component output will not be flattened any more if the input is a tree.
        - Same goes for some other components like Plane Cut.


    "Construction Object" component improvements
    --------------------------------------------

    * Added a right-click option to the Construction Object component for setting the maximum number of control
      points when creating a construction polycurve.



╔=======================================================╗
║ Grasshopper-Tekla Structures Link v1.10 Release Notes ║
╚=======================================================╝


    New component that deconstructs anything
    ----------------------------------------

    * New component "Expand Object" that expands all the public properties of any object (not just Tekla objects)
        - Can be used to extract attributes of e.g. reinforcement or any other object type that doesn't have a
          dedicated expand component.


    New Polyline input param
    ------------------------

    * New param "Tekla Polyline" that lets you pick a polyline in Tekla Structures and bring it into Grasshopper.
        - Similar to the Tekla Point and Tekla Line params, which now are more stable as well.
        - [2019+]


    Support for dates in UDAs
    -------------------------

    * 'Construct UDA' and 'Get UDA Value' have a new option "date" for the 'Type' input. With this enabled:  
        - Value inputs of type GH_Date (e.g. what you get from the 'Construct Date' component) are converted to
          Tekla Date UDAs and vice versa.
        - Text input of the form YYYY-MM-DD (e.g. "2022-01-01") will be converted to the required int
          representation (e.g. 1640995200).


    More reliable item handling
    ---------------------------

    * Less brep insertion errors when using the 'Item' and 'Create Shape' components.
        - This often happened because of duplicated shape geometries 
        - In Tekla version 2019i+, every item geometry is inserted as a new shape, regardless of whether it
          already exists in the shape catalog.
        - For the 'Create Shape' component, the now unnecessary 'Replace identical' menu option has been removed.
        - In older Tekla versions, shape geometries that already exist are detected more reliably.

    * Items are inserted correctly even if their axis is in the negative x direction.


    Easier to work with components and plugins
    ------------------------------------------

    * New options for the 'Deconstruct Component' component:
        - "Explode sub-components", which will inlcude objects created by any sub-components in the 'Created
          Objects' output.
        - "Order created objects", which will order the objects in the 'Created Objects' output according to
          their label (if it exists), then by their type and finally their guids. This can be useful for some
          plugins, where the output order might not always be guaranteed.

    * Plugins inserted with the 'Component' component can adapt if the input objects are switched out.
        - In that case the plugins are being removed and re-inserted, similar to connections and details.


    Improved assembly handling
    --------------------------

    * The 'Deconstruct Assembly' component's 'All Parts' output is renamed to 'All Objects' and now shows rebars,
      bolts, welds, surfaces and surface treatments in addition to the parts of the assembly.

    * Selecting the 'Get Assembly' component highlights the assembly, not just the main part.

    * Baking of assemblies or cast units works as intended even if they take input from multiple item components.


    Possibility to set default numbering attributes
    -----------------------------------------------

    * The default attributes file now includes entries for setting the default
        - Numbering attributes
        - Cast unit type
        - Pour phase
       for different object types. These will be applied to new objects, unless they have numbering inputs.

    * To change the default attributes:
        1. In the 'Tekla' menu in Grasshopper, select 'Reset Default Attributes' (not needed if this is the first
           time you install the Tekla link).
        2. Select "Default attributes..." to open the file with the default attributes.
        3. Modify the attributes and save the file.
        4. Select 'Reload Default Attributes' to take them into use directly (otherwise they will be loaded next
           time Grasshopper is started).

    * In Tekla, the standard part number prefix for concrete objects is "Concrete". This is also the case in the
      default attributes that are generated when selecting "Reset Default Attributes".


    Avoid positioning problems for vertical plates and slabs
    --------------------------------------------------------

    * New input 'Orient' for the 'Plate' and 'Slab' components that can be set to 'false' to ignore auto-
      orientation of plate and slab boundaries.
        - Currently, plates and slabs are auto-oriented upon insertion in Tekla so that the up-side is always in
          the positive global z-direction. This can cause unpredictable orientations for vertical plates.


    And a few other things, including
    ---------------------------------

    * 'Convert to Brep' and 'Convert to Mesh' work more reliably on objects with cuts, regardless of Rhino units.

    * The nicknames of object creating components can be changed without being reset after every solution.

    * 'Construction Polyline' param can be used to pick construction circles, arcs and lines in Tekla as well.

    * 'Construction Arc' param can be used to pick construction circles in Tekla as well.



╔======================================================╗
║ Grasshopper-Tekla Structures Link v1.9 Release Notes ║
╚======================================================╝


    New Components
    --------------

    * New component "Surface Treatment" for inserting surface treatments.
        - Note that the side of the face that the surface treatment is applied to will depend on the orientation
          of the boundary input.

    * New component "Set Attributes" for setting attributes of existing Tekla components.
        - i.e for modifying Tekla connections, details, seams, custom parts or plugins.


    Enhanced Components
    -------------------

    * 'Convert to Brep' and 'Convert to Mesh' components
	    - Handle conversion of objects with cuts and holes more robustly.
	    - Can convert Surfaces, Surface Treatments and Boolean Parts.

    * 'Item' and 'Create Shape' components can convert subD geometry to items in Rhino 7.

    * 'Component' component can insert more than one detail on a single input object, if provided more than one
      input point.

    * For Part and Rebar components, the class can quickly be set by connecting a number to the Attributes input.
        - As previously, a number or string connected to the rebar Attributes input set the rebar size as well.

    * 'Beam' component output is correctly structured, even if beams and polybeams are mixed.

    * 'Construction Object' component assigns different colors to different lines when fed with lists of inputs.

    * When trying to create a shape with the 'Create Shape' component, if another shape with identical geometry
      already exists in the model the 'Create Shape' component now outputs the existing shape rather than nothing.
        - As previously, there's a right-click option 'Replace existing shapes' that lets the component replace
          the existing shape instead.
        - This is needed since Tekla doesn't let you create two shapes with identical geometries.

    * Materials listed in the 'Material Catalog' component are not duplicated on subsequent openings any more.


    UI updates
    ----------

    * New right-click option for object-creating components to delete created objects in Tekla.



╔======================================================╗
║ Grasshopper-Tekla Structures Link v1.8 Release Notes ║
╚======================================================╝

    * 1.8.1 fixes the 'Convert to Brep' and 'Convert to Mesh' components which started working recursively in 1.8, 
      i.e. they were automatically meshing all child objects of any model object. They are now recursive only for
      assemblies and components.
        - Additionally, the output of these components is now a tree, as some objects can result in more than one
          mesh/brep. This also means invalid or null outputs can be identified more easily.

    ---


    New Components
    --------------

    * New components "Lofted Plate" and "Lofted Slab" for inserting lofted plates and slabs.
        - Note that position can't be set for lofted plates in Tekla Structures (yet), thus the position input
          has no effect.
        - The created lofted plates can be invalid for some input curves. This is a Tekla core limitation, i.e.
          you would get the same result if you create them manually from similar polycurves in Tekla Structures.
        - Requires Tekla Structures 2019i or newer.
	
    * New components "Assembly" and "Cast Unit" for creating assemblies and cast units respectively.

    * New component "Deconstruct Assembly" for getting the objects that belong to an assembly or cast unit.

    * New component "Get Assembly" for getting the assembly or cast unit that a model object belongs to.
        - You can get assemblies at different levels in the hierarchy by using the "Level" input.



    Enhanced Components
    -------------------

    * The 'Construction Object' component can create construction polylines in Tekla with real circular arcs, if
      there are arcs in the input polycurve [2019+].
        - Previously arc segements were just approximated with polylines in Tekla.

    * The position type of connections or details, and the detail type of details can be set or checked in GH.
        - Sometimes connections or details don't get inserted correctly from Grasshopper because the position or
          detail type needs to be something other than the default, e.g. 'Wall to Wall' connection needs the
          attribute "position_type 3" to work on straight connections.
	- To set the values to something other than default, use the attributes "position_type" and "detail_type"
          followed by the desired integer value. These are fed to the "Attributes" input of the "Component"
          component. Available values are
               position_type 0 -> MIDDLE_PLANE
               position_type 1 -> BOX_PLANE
               position_type 2 -> COLLISION_PLANE
               position_type 3 -> END_END_PLANE
               position_type 4 -> GUSSET_PLANE
               detail_Type 0   -> END
               detail_Type 1   -> INTERMEDIATE
               detail_Type 2   -> INTERMEDIATE_REVERSE
        - To check the required values, insert the connection or detail manually into Tekla and then reference it
          into the 'Deconstruct Component' component. The values become visible in the 'Attributes' output under
          the names "position_type" and "detail_type".
        - If any of these values is non-default, it is indicated with a note in the 'Input Types'
          output. In that case you might need to set the value explicitly when inserting the component from
          Grasshopper, as described above.

    * The 'Create Item' components have a 'Deforming' input that can be used to give Start and End offsets.
        - As for beams, construct the input with the 'Deforming Attributes' component.
        - Angles, Cambering and Shortening attributes don't have any effect on items.
	- Only newly inserted Item components have this input.

    * 'Convert to Brep' and 'Convert to Mesh' components can convert Assemblies and Cast Units to Rhino breps.



    Smaller Tweaks
    --------------

    * Circle-like curves and arc-like curves can be used as range input for tapered rebar groups.
	- Previously only pure circles and arcs worked as expected.
        - This creates "Tapered curved" type rebar groups.
	- With circles as input, the end points are separated a few mms to make the group valid in Tekla.

    * It's possible to set different colors and line types for different construction objects when created with
      the 'Construction Object' component.

    * Rebar Sets can be referenced with the Rebar param.
        - Previously this was only possible with the Model Object param.
        - There's no component to extract information from them, apart from the solids ("Convert to" components).

    * Fix to 'Beam Angle' component to rotate columns consistently with beams.

    * The 'Tekla Line' param accepts line-like curves as input, in addition to pure lines.

    * Points and zero length lines as inputs for the 'Beam' component gives an appropriate error message.

    * Attributes and UDA query results are ordered alphabetically.



╔======================================================╗
║ Grasshopper-Tekla Structures Link v1.7 Release Notes ║
╚======================================================╝

    * It's easier to insert Tekla components and connections with the 'Component' component.
	- Only relevant inputs will be shown, depending on the type of the connected component (connection,
          detail, custom part, seam, plugin).
	- For connections, there are separate inputs for single and multiple Secondary Parts
		This should mean there's less need to duplicate the Main Part input.
	- Custom parts have a new 'Position' input that can be used to set the position.
        - "Component" components already used in existing scripts will remain unchanged.

    * Generated objects can automatically be removed whenever the geometry or main inputs are empty.
        - To enable this, right-click a component and select "Remove when input is empty".
        - This can be enabled individually for all the object-creating components.
	- Note that removed objects will get new GUIDs when they are regenerated the next time.
                Per default this option is off to prevent objects from getting new GUIDs if an input temporarily
                is empty e.g. because of wrong wiring.

    * It's possible to change (some of) the default attributes for Tekla objects that are being created.
	- This means you can use profiles, sizes and materials that exist in the local environment as defaults,
          i.e. when no other profile or attribute input is connected.
        - To change the attributes, open the Tekla menu in GH and chose "Default Attributes...". This will open
          an xml file that you can edit. After modifying the file, restart Rhino and Grasshopper to take the new
          values into use.

    * It's possible to change the maximum number of points of shape polygons for rebars.
        - 'Rebar' components have a new settings called "Max control points" setting that can be accessed by
          right-clicking the component, similar to 'Beam' components.
        - When shape input curves are converted to Tekla polylines, the number of points is kept below this value
          if possible.

    * Control points on straight polylines will not be removed when inserting rebars or polybeams.
        - Previously straight polylines were turned into two-point lines, thus rebar group shapes could get an
          uneven number of points.

    * Circles and arcs can be used as input for tapered rebar groups.
        - Previously the resulting rebar groups were triangle-shaped rather than circular.

    * Boolean parts can be deconstructed with the the existing 'Deconstruct' components.
        - e.g. 'Deconstruct Beam' can output the properties of a Tekla beam cut object and so on.

    * UDA and attribute string values can contain semi-colons, e.g. myAttribute "1;2;3;4" is parsed correctly.

    * When using arcs as input for the 'Construction Object' component, arcs that are complete circles are turned
      into Construction Circles (rather than Construction Arcs).
	- Construction Arcs can't be created from complete circles in Tekla so this caused errors previously.

    * Attributes are now mapped correctly when a mix of beams and polybeams are created with the same component.

    * You can set the position type of connections using the attribute 'position_type' followed by an integer.
        - This attribute is fed to the 'Attributes' input of the 'Component' component.
        - Some connections need a different value than the default, e.g. 'Wall to Wall' connection needs the
          attribute "position_type 3" to work on straight connections.
        - Available values are
               position_type 0 = MIDDLE_PLANE
               position_type 1 = BOX_PLANE
               position_type 2 = COLLISION_PLANE
               position_type 3 = END_END_PLANE
               position_type 4 = GUSSET_PLANE



╔======================================================╗
║ Grasshopper-Tekla Structures Link v1.6 Release Notes ║
╚======================================================╝

    * New component "Construction Object" for inserting construction objects into the Tekla model.
      The object type in Tekla depends on the input type, i.e.
                   Point -> Construction Point
                    Line -> Construction Line
                  Circle -> Construction Circle
                     Arc -> Construction Arc [2019+ only]
                   Curve -> Construction Polycuve (as a polyline) [2019+ only]
      Plane or Rectangle -> Construction Plane

    * Fix so that you can set multiple construction objects using the "Set Multiple [...]" command in the context
      menu of the Construction Object params.



╔======================================================╗
║ Grasshopper-Tekla Structures Link v1.5 Release Notes ║
╚======================================================╝

 >>> Note: After updating, existing Grasshopper definitions might generate some warnings when they are opened.
           These can be ignored and should stop showing up after you've re-saved the definition.


 New Components
 ==============

    * New Parameters for referencing Construction objects (Points, Lines, Arcs [2019+ only], Circles, Polylines
      [2019+ only] and Planes) from Tekla Structures.
        - The referenced geometry will automatically be converted to corresponding Rhino geometry when plugged
          into standard Grasshopper components.

    * New component "Tekla Line" for picking a line by two points in Tekla Structures.
        - The line will be visualized in Rhino as well as Tekla Structures.

    * New component "Get All UDAs" to extract all the User-defined attributes from any model object.

    * New component "Set UDAs" to set User-defined attributes for any model object.
	- To easily remove any UDA, use the 'Construct UDA' component and set the value of the constructed UDA(s)
          to an empty string, then connect the output to the "Set UDAs" component.


 Enhanced Components
 ===================

    * Curved or Circular bar group types can now be created with the 'Create Rebar Group' component.
        - this will happen automatically if the shape input is a single arc or circle.

    * Spiral type stirrups are supported.
	- The 'Group Attributes' component has a new input called 'Spiral' for enabling spiral stirrups.
        - Can be used with both normal and circular bar groups.

    * Grid labels can be set when creating a grid with the 'Grid' component.

    * You can now check attributes, child objects and required inputs of referenced Tekla components/plugins
      using the 'Deconstruct Component' component.
        - The input information can be useful when trying to determine the correct input sequence for inserting a
          complicated Tekla component (plugin) from Grasshopper.

    * The 'Create Shape' component can replace any existing shape that uses the same geometry.
        - This might be needed since in recent Tekla versions, you can't have two different shapes with identical
          geometry in the Shape catalog.
        - To enable this, set the new right-click option "Replace similar shapes" to 'true' for the 'Create
          Shape' component.
        - If there are existing items in the model using the shape that is being replaced, they will be modified
          to use the new shape name instead.

    * Position for created parts can be entered as text (from e.g. a panel) into the 'Position' input.
        - The basic syntax is PLANE_ENUM(PLANE_OFFSET), ROTATION_ENUM(ROTATION_OFFSET), DEPTH_ENUM(DEPTH_OFFSET)
        - The offsets are optional. See the input tooltip for syntax examples.

    * The max number of control points for e.g. plates or polybeams will be indicated under the component, if
      it's set to anything other than default.
        - The change in number is possible to undo with the Undo command.

    * The 'Beam Angle' component is renamed 'Beam Rotation'.


 Changed behavior
 ================

    * Part Attributes (Name, Profile, Material, Finish, Class, Phase, UDA) are not reset by GH any more if they
      have been manually edited in Tekla, unless they have a value plugged in.
        - As previously, Position attributes will not be updated from GH, unless there's a Position component
          connected to the Position input of the part generating component. In that case all of the position 
          attributes will come from the Position component. Numbering and Deforming attributes work mainly the 
          same way as Position.


 Bugfixes
 ========

    * Under some circumstances, components might lose the connection to the generated objects in Tekla and start
      creating duplicated ones.
        - If the Tekla model was changed without restarting Rhino, the next time you opened the script
          connections might be lost. This has been fixed.
        - If the connection to the Tekla API was lost for some reason, you could sometimes still reference
          objects into Grasshopper, but their GUIDs couldn't be queried and stored. Now there's a warning in the
          balloon tip if this happens, nudging you to restart Rhino to re-establish the API connection.

    * Some Tekla components couldn't be correctly selected in the Component Catalog component since they shared
      the same internal number. This has been fixed.

    * Fix to a bug in handling the 'Phase' attribute input for components.


 Other
 =====

    * API: Support for automatic unboxing of any tekla link types
        - Improves compatibility with scripting/API tools like Speckle or ghPython.

    * UI: Removed prefix numbers from panel headings.



╔======================================================╗
║ Grasshopper-Tekla Structures Link v1.4 Release Notes ║
╚======================================================╝


    * New "Beam Rotation" component that lets you calculate the needed rotation value for a Beam or Column to
      align with a desired Up-vector.
        - You can plug the output value into the Rotation input of a Position component.
        - If a plane is provided as the Up-vector, the plane's normal will be used as expected.

    * Increased the number of control points that can be created when inserting slabs, plates or polybeams.
        - The default limit is 99 points.
        - The limit can be increased up to 999 in Tekla 2017i+, however this might make the model/updates slower.
        - To modify the limit of any "Slab", "Plate" or "Beam" component, right-click the component icon/name and
          change the "Max Control Points" digit scroller value.

    * "Create Tekla Points" component defaults to Beam type point when added.

    * Added shortcuts to default rotations (Front-Top-Back-Below) to the context menu of the "Rotation" input of
      the "Position" component.

    * Automatically generated shape names are prefixed with an underscore.
        - This means they stand out better in the Shape Catalog.
        - The command "Remove unused shapes" (on the Tekla menu in Grasshopper) will only search through and
          remove these shapes.
        - When running the Grasshopper scripts with this version, any previously added shapes will remain in the
          Shape Catalog, and a new shape with the underscore prefix will be created. New and updated items will
          thereafter use the shape with the new shape name.

    * Identical items can be inserted from two different components (previously there was an error message from
      Tekla when you tried this).
        - When creating an item there's a check if an identical shape already exists in the Shape Catalog, and in
          that case the existing shape will be used for the item.
        - If there are several components that create identical items (thus sharing the shape name), the command
          "Bake to Tekla" might not work for that shape.

    * Fixed issues that sometimes appeared when multiple components were solving at once (e.g. some geometry was
      not properly updated).



╔======================================================╗
║ Grasshopper-Tekla Structures Link v1.3 Release Notes ║
╚======================================================╝


New components
--------------

    * New "Create Shape" component that creates or modifies a Tekla shape and adds it to the Shape Catalog.
    
    * New "Get Report Property" component that gets report properties from any model object.


Tekla Menu
----------

    * New menu command "Delete Unused Shapes" that deletes all shape profiles that are not used by any item from
      the component catalog in the Tekla Model.
      - Having a lot (100s or 1000s) of unused shapes can slow down the Tekla model considerably. This is a way
        to remove left-over shapes that can pile up when generating items from Grasshopper. 
      Note: This also removes unused non-Grasshopper generated shapes.


UI updates
----------

    * Added command "Recompute" to the context menu of relevant Tekla components.
      - This is similar to double-clicking the component.

    * A spinner icon shows up next to the Tekla menu whenever there are Tekla components solving

    * Input fields of the Catalog components receive focus when the dialogs open.


General updates for components
------------------------------

    * The output of the part creating components is not flattened any more (so easier to use it downstreams).
      - For this to work properly, use lines or curves to define the geometry of beams and slabs/plates (rather
        than points).

    * Fix to bug that meant the objects created in Tekla sometimes weren't updated to the final state when
      modifying the parameters using sliders.


Component updates
-----------------

    * Tekla Point: Referenced Tekla Points are displayed in Rhino.

    * Tekla Point: A Tekla Point parameter can automatically be used at plane inputs.

    * Beam: Create closed polybeams from closed input curves. The seam point will be automatically moved in case
        it's at a corner.

    * Rebar Group: Rebar groups can be created along curved ranges.
      - If a curve is provided as the Range input, and only one curve is defined for the Shape input (or the input
        is grafted), the shape curve will be copied along the range and the group type will be tapered.
      - If the range input is a circle or arc, the rebar group type will be tapered curved.

    * Component: The Class field of a Connection or a Detail can be updated by using it's backing attribute
        "group_no" in attribute files or direct input.

    * Component: The main part of Details and Seams can be changed without manually removing the objects in Tekla.

    * Convert To Mesh: Fix to bug when reading the mesh from a Tekla solid.



╔======================================================╗
║ Grasshopper-Tekla Structures Link v1.2 Release Notes ║
╚======================================================╝


UI Changes
----------

    * Tekla Main Menu added to Grasshopper with commands to enable/disable all Tekla components, Select all Tekla
        objects etc.

    * Tekla Brep type name shown as Item and Base Component shown as Tekla Component.

    * Tooltips added for context menu commands.


New components
--------------

    * New Create Profile component that creates a fixed Tekla profile from a curve/outline and adds it to the
      Tekla Profile catalog.
      - By default, the profile origin is the center of the outline bounding box. Optionally you can provide your
        own origin point or plane (for controlling the profile rotation).
      Note: This component is fairly slow as it triggers all kinds of macros in Tekla Structures, and is thus not
        suitable for continous updating with e.g. a slider. A Data Dam component can be used at the input to
        control when the component/profile gets updated.

    * New Get UDA Value component that can be used to read the value of any UDA of any model object.
      - If used on a Tekla component, it will return attribute values from the component instead.


Updated components
------------------

    * Improved Item components:
      - [Rhino 6 only] Some closed breps in Grasshopper that previously failed to convert to closed meshes for
        transfer to Tekla are now automatically repaired by the Item components to create valid closed items.
      - If a Geometry input is provided, any Line input (point or line) will be used to set the origin (or origin
        and axis) of the resulting shape, and the geometry will show up at the same location in Tekla and in Rhino
        (previously any line input would move the geometry in Tekla so that it didn't match the location in Rhino.

    * Improved Plate and Slab components:
      - Contour points are more intelligently applied when converting a Nurbs curve to a Tekla contour, to
        minimize the deviation from the actual curve especially around corners and avoid unneccessary points on
        straight edges.

    * Improved Extrude Beams component:
      - The component will create a fitting between the first and last beam segment if the start and end points
        are the same.
      - The default class of extruded beams is now 1 to avoid transparent color.

    * Updated Deconstruct components:
      - Some outputs (Attributes, Position, Numbering, Deforming, Type) will only be calulated in case they are
        connected to another component (can be a Panel). This is to speed up computiation by avoiding extraction
        of unnecessary information.
      - Once the outputs have been connected, double-click the parent Deconstruct component to re-run it and
        calculate the values.
      Note: This means you can't preview output values by hovering the output, unless it's connected to something.

    * Updated Profile Contour component:
      - If no Plane input is given, the profile will show up at the origo as before, but with the global Y-axis as
        its up-direction (previously up was X-axis). This is to align it with the Create profile component.
      - The old component is deprecated but works as previously in projects where it's already in use.

    * Rebar Components that have the option "Remove while inputs are being modified" enabled, will have their
        objects removed from Tekla if the Shape input is invalid.

    * Tekla Input and Floating Parameters (i.e. all Tekla Model Object, Tekla Point, Position, ComponentInput
        params) accept direct input from objects that are Tekla API types.
      - Useful when creating scripting components that output Tekla objects which should then interact with the
        Tekla link components (i.e. no need to create your own Goo types for these Tekla types any more).


Fixes
-----

    * Fix to some components disappearing when a definition is opened without a connection to Tekla Structures.

    * Fix to Index Out of Range error that sometimes appeared for the Rebar Group component.

    * Fix to issue where some attributes were bleeding between Tekla objects.
      - When extracting attribute information from a Tekla part and using that info as input for creating new
        parts, some attributes would stay linked to the original part attributes even outside of Grasshopper.

    * Fix to tolerance issue when converting curves to e.g. polybeams when using large units in Rhino.



╔======================================================╗
║ Grasshopper-Tekla Structures Link v1.1 Release Notes ║
╚======================================================╝


* New components for referencing and deconstructing Tekla objects
-----------------------------------------------------------------

      * New Param components (as floating params) to reference objects from Tekla Structures into Grasshopper.
        - Can be used instead of the old Get components (these are now deprecated).

      * New Deconstruct components to extract model object attributes.
        - Can be used instead of and extends the old Get components (these are now deprecated).

      * New Expand attributes components to browse Part, Position, Numbering and Deforming Attributes that are
        extracted with the Deconstruct components.

      * New Expand UDA component that can be used to expand UDA strings that are extracted from parts.


* Other new components
----------------------

      * New Construct UDA component that can be used to construct UDA input strings for the Part Attributes and
        Rebar Attributes components.
        - Can be used to construct Attributes input for the Component component as well.

      * New Convert to Mesh component for creating a Grasshopper mesh from a Tekla object.
        - This is much faster than the Convert to Brep component, but occasionally might be missing some faces if
          there are holes in the object.


* Improved Item components
--------------------------

      * Item components have a right-click menu item to set the Meshing Parameters as Minimal, Coarse or Smooth.
        - Previously Coarse was always used.
        - This will enable faster updates when Minimal is used and finer details when Smooth is used.
        Note: This is not meant to fix problems due to "bad" breps, you still need to take care of those yourself.

      * Generated shape names are shorter (23 chars + numerical suffix) to prevent some reported errors with long
        shape names.
        - On update, any old shapes will remain in the Shape Catalog and a new shape with the shorter name will be
          created.
        - New and updated items will thereafter use the shape with the new shape name.

      * Default cast unit type for items is CAST_IN_PLACE.

      * A Box can be used as input for the Item components.


* Improved Profile Contour component
------------------------------------

      * Profile Contour component now has an input for a Plane or a Curve.
        - The profile will be projected onto the plane.
        - In case of a curve, the plane is the plane perpendicular to the start point of the curve.

      * The seam point of the profile contour will not depend on the profile orientation any more.
        - It's always the point farthest away in the y- direction of the local profile coord system.
        - Note that this might be at a different vertex than if using the old Profile Contour component.

      * The Default At Depth position of the Profile Contour component is now Behind.

      * The old Profile Contour component will continue to work in definitions where it's already used.


* Various other improvements
----------------------------

      * Tekla Tab renamed to show target Tekla version for quick version verification.

      * More descriptive texts when hovering outputs in Grasshopper.

      * Updated icons for catalogs.

      * Catalogs open next to the cursor (no more off-screen dialogs).

      * Grasshopper preview for Point, Beam and Plate type objects (as reference lines).

      * Rebar Groups don't need a range input if they are tapered.

      * Enum inputs accept text or numbers.

      * Default Depth position for panels created with the Panel component is Front.

      * Fix to bug with Spirit Level fittings for the Extrude Beams component.

      * Fix to bug where Reinforcement start number couldn't be set if the prefix was set.



╔======================================================╗
║ Grasshopper-Tekla Structures Link v1.0 Release Notes ║
╚======================================================╝


* Components to insert reinforcement
------------------------------------
	New Create Single Bar component for creating Single Bars.

	New Create Rebar Group component for creating Rebar Groups.

	New Rebar Catalog, Attributes, Hook, Hooks, Cover and Group components for setting rebar attributes.


* Support for Imperial units
----------------------------
	The Tekla components will use the units of he currently open Rhino document.
	  Note: Referenced or internalized Rhino/Grassshopper point and geometry values won't use the new scale if
	  the Rhino document changes, however points picked in Tekla will adapt. Keep in mind if reusing a script
	  from a different using system. E.g example scripts are created using metric (mm) units, so this means
          the slider values etc might need to be adjusted if viewed with imperial units.


* Component component improvements
----------------------------------
	The Phase can be set for Components from the attributes input (like other attributes), using the "Phase"
	  keyword and an integer.

	Attribute input can contain prefixes (that will be removed), which means that input can be copy-pasted
	  directly from attribute files. E.g. "macro_attributes.class_ref 14" is interpreted as "class_ref 14".
	  Won't work for components that store the attributes in xml format.


* Catalog components improvements
--------------------------------
	Catalog components show the currently selected item beneath the component in the UI.

	New right-click menu item "Pick from catalog..." for catalog components (executes the same command as
	  double-clicking the component).


* Misc smaller improvements, including
--------------------------------------
	The Grid component creates several grids if the input is a tree.
	  Note: You might need to flatten the input for the Grid component in old definitions.

	The Create Beam component removes the old beam when the input changes from a straight line to a curve
          (i.e. beam to polybeam) or vice versa.
	  Note: This will not restore the guid of the beam if changing the input from a line to a curve and back.

	Fittings created by the Extrude Beams component get a better angle when the segments have different
          length.

	UDA input can contain prefixes, which means that input can be copy-pasted directly from attribute files.
	  E.g. 'beam_attributes.comment "this is a beam"' is interpreted as 'comment "this is a beam"'.


╔======================================================╗
║ Grasshopper-Tekla Structures Link v0.9 Release Notes ║
╚======================================================╝

This release improves responsiveness especially when working with Tekla components/connections.
0.9.1 takes care of a bug that prevented some connections from being re-inserted on input modifications.


* When using the "Run in background" mode (i.e. the default), the Tekla objects that the Grasshopper components
    insert or modify in the background will now automatically appear at the component output when they are ready.
  The component icon is changed to a spinner while the objects are being processed in Tekla.
  This allows the Grasshopper UI to remain responsive while outputs can still be used downstream for inserting
    e.g. connections.
  Beneficial especially if used with the new "Remove" option for the Component component (see below).

* Faster interruption in Tekla when inputs are changing.
  This allows you to quicker see partial results on screen when modifying e.g. a slider.

* New right-click option "Remove while inputs are being modified" for the Component component. This mode means the
    inserted components in Tekla are removed while part and point inputs are being modified, to allow for quicker 
    updates of the model.
  Note: In this mode, the components will get new GUIDs after each input modification.
  This option is checked by default on newly inserted components.

* Resolved Illegal Z-direction error in Tekla preventing some connections from being inserted.



╔======================================================╗
║ Grasshopper-Tekla Structures Link v0.8 Release Notes ║
╚======================================================╝


* New Bent Plate component (Tekla Structures 2017 or newer).
  Behaves like the "Create bent plates using faces" command in Tekla Structures.

* Possibility to create points as native Tekla points (control points) with the Create Tekla Point component.
  !Note: You might need to re-insert any Tekla Point components to remove potential Parameter Index errors.

* The Get Point component shows the picked point in Tekla (as a control point) as well as in Rhino.

* Improvements in the robustness when inserting and modifying components.



╔======================================================╗
║ Grasshopper-Tekla Structures Link v0.7 Release Notes ║
╚======================================================╝

!Note: If using Tekla Structures 2017 or 2017i, this update requires at least 2017 SP5 or 2017i SP1.


* New Convert to Brep component that renders any Tekla model object geometry as Breps in Rhino.
    Note: The boundary output of the Get Plate component is now a polyline instead of a Brep.

* New Profile Contour component that can be used to extract the outline and holes of a profile from the
  profile catalog in Tekla.

* New Get Item, Get Connection and Get Model Object components to reference objects from Tekla structures.

* Internal lines of generated items are now hidden in the model view and in the drawings.

* The Plane Cut and Fitting components react correctly to changes in the input part.



╔======================================================╗
║ Grasshopper-Tekla Structures Link v0.6 Release Notes ║
╚======================================================╝

!Note: This update might generate some "Input parameter chunk is missing. Archive is corrupt."-messages when
  opening an old definition. These can be ignored and will disappear when you've saved the definition again.


* New Pad Footing and Strip Footing components.

* New Deforming component that can be used to set start and end offsets and angles for beams.
	
* Non-solid breps and meshes can be inserted as surfaces with the Create Item components.

* Improvements when transferring solids with the Create Item components.

* Default detail type is now End detail and default direction is Auto (can be changed with the zsuunta attribute)

* The detail type (end/intermediate/reverse) can be set with the detail_type attribute.



╔======================================================╗
║ Grasshopper-Tekla Structures Link v0.5 Release Notes ║
╚======================================================╝


* Position can be set for Custom Parts (by using text attributes as they are used in the attribute file).

* Negative decimal values can be used for attributes/UDA:s.

* Single points can be used as input for the componentInput component.



╔======================================================╗
║ Grasshopper-Tekla Structures Link v0.4 Release Notes ║
╚======================================================╝


* Baking of items works better (shape of baked object is saved to shape catalog).

* Up direction attribute (zsuunta) can be set for components.

* Icons added for inputs.



╔======================================================╗
║ Grasshopper-Tekla Structures Link v0.3 Release Notes ║
╚======================================================╝


* New Item componens (Tekla Structures 2017 only)
-------------------------------------------------
	For creating steel and concrete items, thus allowing you to transfer any
	  arbitary geometry from Rhino.
	Not possible to release for previous Tekla versions.


* New Plane Cut component
-------------------------
	For cutting a part with a plane.	


* New Part Cut component
------------------------
	For cutting a part with another part.


* New Fitting component
-----------------------
	For fitting a part end.


* Cut the link between the component and the part
-------------------------------------------------
	Added right-click option to "bake" the part to tekla. This means that
	  the link between the component and the part is cut and a copy of the
	  part is manipulated upon futher modifications.


* Phase attribute
-----------------
	[Breaking Change] Added Phase (number) to part attributes.


* Notable bugfixes
------------------
	Orientation of plates and slabs automatically adjusted to global Z
	  direction.
	
	Direct modification of generated plates and slabs fixed (previously part
	  DM wasn't working if start and end points were similar).



╔======================================================╗
║ Grasshopper-Tekla Structures Link v0.2 Release Notes ║
╚======================================================╝


* New Component component
-------------------------
	For inserting connections, details, plugins etc.


* New Component Catalog component
---------------------------------
	For picking the component to insert from the Tekla Component Catalog.


* New Component Input component
-------------------------------
	For creating custom plugin input.


* Part Attributes component updates
-----------------------------------
	[Breaking change] The UDAs list of strings input is changed to a UDA
	  single string item input.
		Now, if using a list of strings for the UDA input, the component 
		  will assign them to different parts. To set multiple UDAs for 		 
		  one item, you can still provide them in a single text input, 
		  separated by newlines.
		You need to delete and re-insert any inserted Part Attributes 
		  components to take the updated behavior into use.
	[Breaking change] Updated UDA syntax to match what we have in different 
	  inp files. See the documentation or the tooltips at the input for the 
	  new syntax.


* Object-creating components updates
------------------------------------
	Forcing the components to re-run by double-clicking the icon preserves 
	  existing GUIDs. I.e. the operation doesn't delete and replace all the 
	  generated members any more, just recreates any deleted ones and resets 
	  the rest.


* Input components updates
--------------------------
	Now works with trees internally instead of lists. Otherwise they might 
	  lose track of the input objects when using tree inputs.
	[Breaking change] Outputs the model object in addition to the other 
	  info. You need to re-insert the components to update the outputs.


* Get Plate Component updates
-----------------------------
	fix to situations where it didn't read the plate.


* Point component updates
-------------------------
	Faster removing of points when the component is deleted.
